Large Scale FastAPI অ্যাপ্লিকেশন তৈরি

Web Development - ফাস্টএপিআই (FastAPI) - FastAPI এর বেস্ট প্র্যাকটিস এবং অ্যাডভান্সড টেকনিক
198

FastAPI একটি আধুনিক এবং দ্রুত ওয়েব ফ্রেমওয়ার্ক যা উচ্চ পারফরম্যান্স এবং দ্রুত ডেভেলপমেন্টের জন্য ডিজাইন করা হয়েছে। যখন আপনি একটি বড় স্কেল FastAPI অ্যাপ্লিকেশন তৈরি করবেন, তখন আপনাকে কিছু কৌশল এবং সেরা অভ্যাস অনুসরণ করতে হবে যাতে অ্যাপ্লিকেশনটি স্কেলেবল, পোর্টেবল, এবং রক্ষণাবেক্ষণযোগ্য হয়।

এখানে আমরা দেখব কিভাবে একটি Large Scale FastAPI অ্যাপ্লিকেশন তৈরি করা যেতে পারে। এটি সঠিক ফোল্ডার স্ট্রাকচার, ডাটাবেস ডিজাইন, API রাউটিং, অডিট লোগিং, টেস্টিং, এবং আরও অনেক কিছু নিয়ে আলোচনা করবে।


Step 1: প্রজেক্ট স্ট্রাকচার ডিজাইন করা

একটি বড় স্কেল অ্যাপ্লিকেশনের জন্য ফোল্ডার স্ট্রাকচার পরিষ্কার এবং মডুলার হওয়া জরুরি। এতে আপনার অ্যাপ্লিকেশন সহজে স্কেল এবং রক্ষণাবেক্ষণযোগ্য থাকবে।

উদাহরণ: FastAPI অ্যাপ্লিকেশনের স্ট্রাকচার

my_large_fastapi_project/
├── app/
│   ├── main.py          # FastAPI অ্যাপ শুরু
│   ├── models/          # ডাটাবেস মডেলস
│   ├── schemas/         # Pydantic schemas (input/output)
│   ├── api/             # API রাউটস
│   │   ├── __init__.py
│   │   ├── users.py     # User রাউট
│   │   └── items.py     # Item রাউট
│   ├── crud/            # CRUD অপারেশন
│   ├── core/            # অ্যাপের মূল কনফিগারেশন
│   ├── db/              # ডাটাবেস কনফিগারেশন
│   ├── services/        # অতিরিক্ত সার্ভিস লজিক
│   ├── __init__.py
├── requirements.txt     # ডিপেনডেন্সি
├── .env                 # পরিবেশ ভেরিয়েবল
├── alembic/             # মাইগ্রেশন ফাইল (SQLAlchemy)
└── tests/               # টেস্ট কেস

ফোল্ডার স্ট্রাকচারের ব্যাখ্যা:

  • main.py: FastAPI অ্যাপ শুরু এবং কনফিগারেশন।
  • models/: ডাটাবেস মডেলস, যেখানে ডাটাবেস স্কিমা থাকে।
  • schemas/: Pydantic models যা ইনপুট এবং আউটপুট ভ্যালিডেশন করে।
  • api/: API রাউটস বা এন্ডপয়েন্ট। প্রতিটি মডিউল আলাদা ফাইল হিসেবে থাকে (যেমন, users.py, items.py)।
  • crud/: ডাটাবেস অপারেশন যেমন Create, Read, Update, Delete।
  • core/: অ্যাপ কনফিগারেশন এবং অন্যান্য মৌলিক কনফিগারেশন (যেমন লগিং, সিকিউরিটি)।
  • db/: ডাটাবেস কনফিগারেশন এবং সংযোগ।
  • services/: অতিরিক্ত লজিক বা সার্ভিস। এখানে আপনি বাহ্যিক API কল, ইমেইল পাঠানো, এবং অন্যান্য লজিক রাখতে পারেন।

Step 2: ডাটাবেস সংযোগ এবং মডেল ডিজাইন

SQLAlchemy বা Tortoise ORM দিয়ে ডাটাবেস মডেল ডিজাইন করা হয়। এখানে আমরা SQLAlchemy ব্যবহার করছি।

উদাহরণ: SQLAlchemy মডেল

# app/models/item.py
from sqlalchemy import Column, Integer, String, Float
from app.db import Base

class Item(Base):
    __tablename__ = 'items'

    id = Column(Integer, primary_key=True, index=True)
    name = Column(String, index=True)
    description = Column(String)
    price = Column(Float)

ডাটাবেস কনফিগারেশন:

# app/db.py
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db"

engine = create_engine(SQLALCHEMY_DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()

এখানে, SessionLocal হল ডাটাবেস সেশন তৈরির জন্য ব্যবহৃত মেথড, এবং Base হল সমস্ত মডেলের বেস ক্লাস।


Step 3: CRUD অপারেশন ডিজাইন

CRUD (Create, Read, Update, Delete) অপারেশন ডিজাইন করার জন্য, আমরা CRUD ফোল্ডারে আলাদা ফাইল তৈরি করব যা ডাটাবেস অপারেশনগুলির সাথে সম্পর্কিত হবে।

উদাহরণ: CRUD অপারেশন

# app/crud/item.py
from sqlalchemy.orm import Session
from app.models.item import Item
from app.schemas.item import ItemCreate

def create_item(db: Session, item: ItemCreate):
    db_item = Item(name=item.name, description=item.description, price=item.price)
    db.add(db_item)
    db.commit()
    db.refresh(db_item)
    return db_item

Pydantic স্কিমা:

# app/schemas/item.py
from pydantic import BaseModel

class ItemBase(BaseModel):
    name: str
    description: str | None = None
    price: float

class ItemCreate(ItemBase):
    pass

class Item(ItemBase):
    id: int

    class Config:
        orm_mode = True

ItemCreate স্কিমা ব্যবহারকারী থেকে ডাটা গ্রহণের জন্য এবং Item স্কিমা ডাটাবেস থেকে ফেরত আসা আইটেমের জন্য।


Step 4: API রাউটস এবং Endpoints

আমরা /users, /items ইত্যাদি বিভিন্ন এন্ডপয়েন্ট তৈরি করব এবং রাউট করতে APIRouter ব্যবহার করব।

উদাহরণ: API রাউট

# app/api/items.py
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from app import crud, schemas, models
from app.db import SessionLocal

router = APIRouter()

def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()

@router.post("/items/", response_model=schemas.Item)
def create_item(item: schemas.ItemCreate, db: Session = Depends(get_db)):
    return crud.create_item(db=db, item=item)

এখানে, create_item ফাংশন ব্যবহারকারী থেকে ইনপুট নিয়ে ডাটাবেসে আইটেম তৈরি করে। Depends(get_db) ডাটাবেস সেশন গ্রহণ করে।


Step 5: ডিপেনডেন্সি ইনজেকশন এবং রাউটস

একটি বড় অ্যাপ্লিকেশন পরিচালনা করতে Dependency Injection ব্যবহার করা খুবই কার্যকর। এটি কোডের পুনরায় ব্যবহারযোগ্যতা এবং পরীক্ষণযোগ্যতা (testability) বাড়ায়।

FastAPI ডিপেনডেন্সি ইনজেকশনের মাধ্যমে, যেমন ডাটাবেস সেশন এবং সার্ভিস লজিক ইনজেক্ট করা যায়।


Step 6: টেস্টিং

FastAPI স্বয়ংক্রিয়ভাবে OpenAPI স্পেসিফিকেশন তৈরি করে, যা Swagger UI এবং ReDoc দ্বারা টেস্ট করা যেতে পারে।

টেস্টিং এর উদাহরণ:

# tests/test_item.py
from fastapi.testclient import TestClient
from app.main import app

client = TestClient(app)

def test_create_item():
    response = client.post("/items/", json={"name": "Item 1", "price": 20.0})
    assert response.status_code == 200
    assert response.json() == {"name": "Item 1", "price": 20.0, "id": 1}

Step 7: ডিপ্লয়মেন্ট

  1. Docker Integration: Dockerfile ব্যবহার করে অ্যাপ কনটেইনারাইজড করে ডিপ্লয় করা যায়।
  2. Heroku/AWS/GCP: Heroku, AWS, অথবা Google Cloud Platform-এ FastAPI অ্যাপ ডিপ্লয় করা যেতে পারে।

একটি বড় স্কেল FastAPI অ্যাপ্লিকেশন তৈরি করতে হলে মডুলার অ্যাপ স্ট্রাকচার, ডাটাবেস ডিজাইন, CRUD অপারেশন, ডিপেনডেন্সি ইনজেকশন এবং টেস্টিং ব্যবহার করা জরুরি। FastAPI এর সাহায্যে খুব দ্রুত স্কেলেবল এবং পোর্টেবল অ্যাপ্লিকেশন তৈরি করা সম্ভব, যা প্রোডাকশনে উচ্চ পারফরম্যান্স সরবরাহ করে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...